package funciones;

import operaciones.Operacion;
import excepciones.ErrorDivisionPor0;
import excepciones.ValorNoPertenecienteAlDominio;
import funciones.Funcion;

public class OperacionEntreFunciones extends Funcion{
	
	private Funcion primerOperando;
	private Funcion segundoOperando;
	private Operacion operacion;
	
	public OperacionEntreFunciones(Funcion f,Funcion g,Operacion operacion)
	{
		this.setPrimerOperando(f);
		this.setSegundoOperando(g);
		this.setOperacion(operacion);
	}
	
	public double evaluar(double valor) throws ErrorDivisionPor0, ValorNoPertenecienteAlDominio{
		return this.getOperacion().aplicar(this.getPrimerOperando(),this.getSegundoOperando(),valor);
	}
	
	private void setPrimerOperando(Funcion f)
	{
		this.primerOperando=f;
	}
	
	private void setSegundoOperando(Funcion f)
	{
		this.segundoOperando=f;
	}
	
	private void setOperacion(Operacion operacion)
	{
		this.operacion=operacion;
	}
	
	private Funcion getPrimerOperando()
	{
		return primerOperando;
	}
	
	private Funcion getSegundoOperando()
	{
		return segundoOperando;
	}
	
	private Operacion getOperacion()
	{
		return operacion;
	}
}
